<%@ include file="/common/taglibs.jsp"%>
<!--分页查询共用的页面-->
<%@ include file="/common/common.jsp"%>
<%@ include file="/common/dateUtil.jsp"%>
<%@ page language="java" pageEncoding="UTF-8"%>

<head>
    <script type="text/javascript" src="<%=jsPath%>/jquery/jquery.timers.js"></script><!--定时器-->
    <script type="text/javascript" src="<%=ApplicationPath%>/test/js/alarm/testViewAllAlarms.js"></script><!--测试代码-->


<style>



</style>

<script>

/*
功能：根据条件，查询符合条件的所有报警数据的详细信息，包含普通报警信息和主动安全报警信息， 
        其中主动安全报警信息中的数据单条显示，不需要统计为一条

流程：
    1.初始化页面控件，包括查询条件输入控件，数据显示表格等
    2.初始化数据
    3.点击错误信息
    4.点击导出按钮，导出excel文档
*/

///////////////////////////////////////////////////////全局变量
var params = {};//定义参数保存变量
var debug = false;//定义调试标记，为true则允许输出调试信息，false则不允许

var activeSafeName = "主动安全报警";//定义主动安全报警来源描述数据




///////////////////////////////////////////////////////立即运行方法

//初始化控件,页面加载时即加载，不需要调用
$(function(){
    //初始化表格
    $("#allAlarmsDataGrid").datagrid({
        height:"100%",
        toolbar:"#allAlarmsToobar",//工具条
        pagination:true,//分页工具栏
		pageList:[15,30,50,100],
		pageSize:15,
		singleSelect:true,//单选
		rownumbers:true,//行号
		striped:true,//隔行变色
		fitColumns: true,//填充列
		checkOnSelect: false,//选中则勾选
		selectOnCheck: false,//勾选则选中
    });

    //初始化报警类型信息
    // outDebugInfo("初始化报警类型信息");
    Utility.initAlarmType($("#allAlarmAlarmType"));
});


////////////////////////////////////////////////////////初始化控件
/*
1.初始化报警来源选择事件
2.初始化分页控件选择事件
3.初始化时间控件双击事件
4.初始化查询、重置、导出按钮的点击事件
*/

//接口，初始化控件
function initDivs(){
    setAlarmSourceSelectEvent();//设置报警来源选择事件
    setInputStartTime();//开始时间输入框事件
    setInputEndTime();//结束时间输入框事件
    setPageDiv();//设置分页控件
    setBtnQueryAllAlarms();//设置查询按钮
    setBtnResetAllAlarms();//设置重置按钮
    setBtnExportAllAlarms();//设置导出按钮

}


//设置报警来源选择事件
function setAlarmSourceSelectEvent(){
    $("#allAlarmAlarmSource").combobox({
        onSelect: function (record) {//选择事件
            // outDebugInfo("报警来源选择："+record.text);
            //填充报警类型数据
            Utility.fillAlarmTypes($("#allAlarmAlarmType"), record.text);
        }
    });
}

//设置分页控件
function setPageDiv(){
    //选择页面事件定义
    $("#allAlarmsDataGrid").datagrid("getPager").pagination({
        onSelectPage: function (pageNumber, pageSize) {
            outDebugInfo("选择页面事件触发");
            //获取新的页面参数
            getPageParams();
            // outDebugInfo(params);
            if(checkParams()) {
                //请求查询数据
                getAjaxData();

            }
        }
    });
}


//设置开始时间输入框双击事件
function setInputStartTime(){
    ///初始化时间
    var now = Utility.today();
	$("#allAlarmStartTime").val(now + " 00:00:00");
	
    $("#allAlarmStartTime").dblclick(function(event){
        var timeStr = $("#allAlarmStartTime").val();
        if(timeStr != ""){
            var strTemp = timeStr.split(" ");
            if(strTemp.length >= 2){
                timeStr = strTemp[0] + " 00:00:00";
                $("#allAlarmStartTime").val(timeStr);
            }
        }
        // outDebugInfo("当前时间 : "+timeStr);
    });
}

//设置结束时间输入框双击事件
function setInputEndTime(){
    var now = Utility.today();
    $("#allAlarmEndTime").val(now + " 23:59:59");
    $("#allAlarmEndTime").dblclick(function(event){
        var timeStr = $("#allAlarmEndTime").val();
        if(timeStr != ""){
            var strTemp = timeStr.split(" ");
            if(strTemp.length >= 2){
                timeStr = strTemp[0] + " 23:59:59";
                $("#allAlarmEndTime").val(timeStr);
            }
        }
        // outDebugInfo("当前时间 : "+timeStr);
    });
}

//设置查询按钮点击事件
function setBtnQueryAllAlarms(){
    $("#allAlarmAtnQuery").click(btnClickQueryAllAlarms);
}

//设置重置按钮点击事件
function setBtnResetAllAlarms(){
    $("#allAlarmBtnReset").click(btnClickResetAllAlarms);
}

//设置导出按钮点击事件
function setBtnExportAllAlarms(){
    $("#allAlarmBtnExport").click(btnClickExportAllAlarms);
}



////////////////////////////////////////////////////////初始化数据

//接口，初始化基本数据
function initDatas(){
    fitDepDatas();//填充车组信息
    fitAlarmSourceDatas();//填充报警来源信息
}

//填充车组数据
function fitDepDatas(){
    //创建下拉部门树
    Utility.createDepTree("allAlarmDepId");
}

//填充报警来源信息
function fitAlarmSourceDatas(){

    let alarmSourceList = window.localStorage.getItem("alarmSourceList");
    alarmSourceList = JSON.parse(alarmSourceList);
    if(!DataUtil.isDefined(alarmSourceList)){
        let list = [];
        let sourceList = [{text:"请选择",value:-1}];
        $.each(alarmSourceList,function(n,item){
            if(item.alarmSourceName != activeSafeName && list.indexOf(item.alarmSourceName) <= -1){
                list.push(item.alarmSourceName);
                sourceList.push({text:item.alarmSourceName,value:item.index});
            }
        });

        $("#allAlarmAlarmSource").combobox({
            textField: "text",
            valueField: "value",
            editable: false,
            data: sourceList,
            // onSelect: function (record) {//选择事件，公用方法，只实现填充，不需要级联
            //     // console.log("报警来源选择："+record.text);
            //     fillAlarmType(record.text);
            //     fillProcessStatus();//根据选择重新填充报警处理方式
            // }
        });
        $("#allAlarmAlarmSource").combobox("select",sourceList[0].value);
    }
}



////////////////////////////////////////////////////////公用、独立的方法



//选择车组
function doSelectDep()
{
	InfoWindow.selectDep();
}

//设置车组信息回调方法，用于查找数组
function onDepSelected(depId,depName)
{
	$("#allAlarmDepId").combotree("setValue", depId);
}


//设置页面为显示指定页
function setToPage(num){
    outDebugInfo("开始显示第" + num + "页");
    var opts = $("#allAlarmsDataGrid").datagrid("options");
	var pager = $("#allAlarmsDataGrid").datagrid("getPager");
	opts.pageNumber = num;
	opts.pageSize=params.pageSize;
	pager.pagination("refresh", {
		pageNumber: num,
		pageSize: opts.pageSize
    });
}

//获取页面参数
function getPageParams(){
    params.pageNumber = $("#allAlarmsDataGrid").datagrid("getPager").data("pagination").options.pageNumber;
	params.pageSize = $("#allAlarmsDataGrid").datagrid("getPager").data("pagination").options.pageSize;
}



//输出调试信息
function outDebugInfo(msg){
    if(!debug){
        return;
    }
    var outStr = "viewAllAlarms ----> ";
    if(typeof(msg) != "string"){
        console.log(outStr);
        console.log(msg);
    }else{
        outStr += msg;
        console.log(outStr);
    } 
}

//输出错误信息
function outErrorInfo(msg){
    console.error("viewAllAlarms ----> " + msg);
}

////////////////////////////////////////////////////////重置功能

//重置按钮点击事件
function btnClickResetAllAlarms(event){
    // outDebugInfo("重置按钮点击事件开始");

    $("#allAlarmPlateNo").val("");

    var now = Utility.today();
	$("#allAlarmStartTime").val(now + " 00:00:00");
    $("#allAlarmEndTime").val(now + " 23:59:59");

    $("#allAlarmDepId").combotree("setValue", 0);
    $("#allAlarmAlarmSource").combobox("select","-1");
    $("#allAlarmAlarmType").combobox("select","-1");
}


////////////////////////////////////////////////////////查询功能
/*
1.首先获取参数
    如果参数校验正确，则继续，如果参数校验不正确，则提示信息
2.初始化页面，设置为第一页
3.发送数据请求，锁页面
4.接收到响应数据，如果响应正确，则加载数据，如果响应错误，则提示信息
5.解锁页面，恢复可操作状态

*/

//接口
//查询按钮点击事件
function btnClickQueryAllAlarms(event){
    outDebugInfo("查询按钮点击事件开始");
    // outDebugInfo(event);
    getParams();//获取参数
    if (checkParams()) {
        params.pageNumber = 1;

        //初始化控件为第一页
        setToPage(1);

        getAjaxData();//请求数据

    }

}


//获取参数
/*
车牌号，车组，报警来源，报警类型，开始时间，结束时间，
*/
function getParams(){
    //初始化参数为空
    params = {};
    getBasicParams();//获取基本的参数
    getPageParams();//获取页面参数
    getAlarmParams();//获取报警类型和报警来源参数

    // outDebugInfo("params=");
    outDebugInfo(params);
}


//获取时间，组织部门，车牌号参数
function getBasicParams(){
    //获取基本查询信息
    var plateNo = $("#allAlarmPlateNo").val();
    if(plateNo != ""){
        params.plateNo = plateNo;
    }
    
	
	params.startTime = $("#allAlarmStartTime").val();//开始时间
	params.endTime = $("#allAlarmEndTime").val();//结束时间

	//获取选择树种选中的类型
    var treeSelected = $("#allAlarmDepId").combotree("tree").tree("getSelected");
	
    if(treeSelected!= null){
		var depIdTemp = treeSelected.id;
		// outDebugInfo("depIdTemp="+depIdTemp);
		try {
			depIdTemp = parseInt(depIdTemp);
		} catch (error) {
			outErrorInfo("获取查询条件中转换错误"+error);
		}
		if(depIdTemp != undefined){
			params.depId=depIdTemp;//获取depId
		}else{
			params.depId=0;
		}
		
    }
}




/*
获取报警来源和报警类型参数
1.首先判断alarmType，
    如果alarmType选中的值为请选择，那么为默认当前来源全选，只判断alarmSource(其他用户自定义输入会校验不通过)
        如果alarmSource为合法值，则
    如果alarmType是选中的值，那么获取alarmSource和alarmType，如果值不为空，则添加参数，如果为空，则提醒用户重新选择
*/
//获取报警来源和报警类型参数
function getAlarmParams(){
    try {
        //从window.localStorage 获取保存的数据，并还原为数组对象
        var alarmSourceList = window.localStorage.getItem("alarmSourceList");
        alarmSourceList = JSON.parse(alarmSourceList);
        if(alarmSourceList.length <= 0 )//如果列表获取错误，则直接返回
        {
            return;
        }
                
        var alarmSourceText = $("#allAlarmAlarmSource").combobox("getText");
        var alarmSourceValue = $("#allAlarmAlarmSource").combobox("getValue");
        // var alarmTypeText = $("#alarmType").combobox("getText");//无需使用，注释掉
        var alarmTypeValue = $("#allAlarmAlarmType").combobox("getValue");
        // console.log("alarmSourceValue=" + alarmSourceValue);
        // console.log("alarmTypeValue=" + alarmTypeValue);
        if(alarmTypeValue>-1){
            //选择了合法的报警类型
            var temp = alarmSourceList[alarmTypeValue];//直接获取值
            params.alarmSource = temp.alarmSource;
            params.alarmType = temp.alarmType;
        }else{
            if (alarmSourceValue > -1) {//选择了值
                if (alarmSourceText != activeSafeName) {
                    //不为主动安全报警
                    var temp = alarmSourceList[alarmSourceValue];//直接获取值
                    params.alarmSource = temp.alarmSource;
                }
            }//未选择，默认全选,不需要赋值
        }   
    } catch (error) {
        outErrorInfo("获取报警来源和报警类型参数错误:"+error);
    }
    
}



/*
校验数据
    1.校验车牌号
    2.校验时间
*/
function checkParams(){
    var returnFlg = true;
    if(params != undefined){
        //校验车牌号，最多10位
        if(params.plateNo != undefined){
            if(params.plateNo.length > 10){
                alert("车牌号输入非法!")
                returnFlg = false;
            }
        }
        //校验时间
        var iHours = Utility.getDiffDay(Utility.stringToDate(params.startTime),Utility.stringToDate(params.endTime));
        if(iHours < 0){
            alert("结束时间应大于开始时间，请输入正确的结束时间！")
            returnFlg = false;
        }

    }else{
        returnFlg = false;
    }

    return returnFlg;
}




/*
请求ajax数据


请求ajax数据


请求ajax数据
*/
function getAjaxData(){
    var jsonData = JSON.stringify(params);
    var url = "<%=ApplicationPath%>/activeSafeAlarm/getAllAlarmsPageDatas.action";
    // console.log(jsonData);
    outDebugInfo("开始请求数据......");
    Utility.showLoading();//添加遮罩
    Utility.getAjaxData(url,jsonData,function(data){
            outDebugInfo("接收数据->");
			outDebugInfo(data);
			Utility.hideLoading();//解除遮罩效果
			$("#allAlarmsDataGrid").datagrid('loadData',data.data);//绑定数据
    });
}


//数据列报警来源格式化
function formatAlarmSource(value, rowData, rowIndex){
    var alarmSourceTemp = rowData.alarmSource;
    var alarmTypeTemp = rowData.alarmType;
    if (alarmSourceTemp != null && alarmTypeTemp != null) {
        var dataTemp = Utility.getOneAlarmSourceData(alarmSourceTemp,alarmTypeTemp);//根据报警类型和报警来源获取单条数据
        if(dataTemp != null){
            return dataTemp.alarmSourceName;
        }
    }
}

//数据列报警类型格式化
function formatAlarmType(value, rowData, rowIndex){
    var alarmSourceTemp = rowData.alarmSource;
    var alarmTypeTemp = rowData.alarmType;
    if (alarmSourceTemp != null && alarmTypeTemp != null) {
        var dataTemp = Utility.getOneAlarmSourceData(alarmSourceTemp,alarmTypeTemp);
        if(dataTemp != null){
            return dataTemp.alarmTypeName;
        }
    }
}




////////////////////////////////////////////////////////导出功能
//导出按钮点击事件
function btnClickExportAllAlarms(event){
    outDebugInfo("导出按钮点击事件开始");
    exportExcel();
}

function exportExcel(){
    try {
		// console.log(params);
		if (params.alarmSource != undefined) {
			$("#alarmSource").val(params.alarmSource);
		}
		if (params.alarmType != undefined) {
			$("#alarmType_1").val(params.alarmType);
		}
		if (params.alarmSourceList != undefined) {
			$("#alarmSourceList").val(JSON.stringify(params.alarmSourceList));
		}
		$("#allAlarmQueryForm").attr("target", "_blank"); //弹屏下载
		$("#allAlarmQueryForm").submit();
		$("#allAlarmQueryForm").attr("target", "");
	} catch (error) {
		outErrorInfo("导出错误："+error);
	}
}




////////////////////////////////////////////////////////页面加载完成后调用方法

$(document).ready(function(){
    //初始化控件
    initDivs();
    //初始化数据
    initDatas();


    //测试方法
    // testClass.setTestInfoDiv('testInfo');//设置输出控件,不设置则不输出到页面
    // testClass.startTest();//开始测试
});

</script>




</head>
<body style="background-color:rgb(251,251,251);height:98%;width:99%;" class="base_ver_flexStartDiv_css">
<div id="allAlarmsToobar" style="width:100%;" class="sh_css_basFontSize">
    <form id="allAlarmQueryForm" action="<%=ApplicationPath%>/export.action" >
        <input type="hidden" name="queryId" value="activeSafeAlarm.selectAllAlarmsPageDatas" />
        <input type="hidden" name="fileName" value="报警明细统计报表" />
        <input type="hidden" id="alarmType_1" name="alarmType" value="" />
        <input type="hidden" id="alarmSource" name="alarmSource" value="" />
        <input type="hidden" id="alarmSourceList" name="alarmSourceList" value="" />
        
        <!--上层按钮栏-->
        <div style="width:80%;margin-left: 15px;margin-top:5px;">
            <a id="allAlarmBtnExport" href="#" class="easyui-linkbutton" data-options="iconCls:'icon-excel'">导出</a>
            &nbsp;&nbsp;
            <a id="allAlarmBtnReset" href="#" class="easyui-linkbutton" data-options="iconCls:'icon-clear'">重置</a>
        </div>
        <!--下层查询工具栏-->
        <hr>
        <div style="width:100%;height:45px;" class="base_hori_flexStartDiv_css">
            <!--左侧条件样式-->
            <div style="height:100%;margin-top:7px;margin-left:15px;" class="base_ver_Around_leftDiv_css">
                <div>
                    组织
                    <select id="allAlarmDepId" name="depId" style="width:170px;"></select>
                    <a id="btnSelectVehicle" href="#" class="easyui-linkbutton" data-options="iconCls:'icon-search'"
                            onclick="doSelectDep();"></a>
                            &nbsp;&nbsp;
                    车辆
                    <input id="allAlarmPlateNo" type="text" name="plateNo" style="width:100px;">
                    &nbsp;&nbsp;
                    起止时间
                    <input type="text" name="startTime" id="allAlarmStartTime" class="datetimepicker" style="width:130px;" />
                    <span>-</span>
                    <input type="text" name="endTime" id="allAlarmEndTime" class="datetimepicker" style="width:130px;" />
                </div>
                <div style="margin-top:7px;">
                    报警来源
                    <select id="allAlarmAlarmSource" style="width:150px;"></select>
                    &nbsp;&nbsp;
                    报警类型
                    <select id="allAlarmAlarmType" style="width:150px;"></select>
                </div>
            </div>
            <!--右侧按钮-->
            <div style="margin-left:20px;" class="base_hori_flexCenterDiv_css">
                <!-- <a id="allAlarmAtnQuery" href="#" class="easyui-linkbutton" data-options="iconCls:'icon-search'">查询</a> -->
                <div id="allAlarmAtnQuery" class="sh_css_btn">
                    <div class="ui-icon icon-search" style="width:16px;height:16px;"></div>
                    <span>查询</span>
                </div>
            </div>
        </div>
    </form>
</div>
<table id="allAlarmsDataGrid" class="easyui-datagrid" style="width:100%;">
    <thead>
        <tr>
            <th data-options="field:'depName'" width="100">组织名称</th>
            <th data-options="field:'plateNo'" width="80">车牌号码</th>
            <!-- <th data-options="field:'simNo'" width="120">通讯SIM卡号</th> -->
            <th data-options="field:'alarmType',formatter:formatAlarmType"" width="110">报警类型</th>
            <th data-options="field:'descr'," width="90">附加消息</th>
            <th data-options="field:'alarmSource',formatter:formatAlarmSource" width="100">报警来源</th>
            <th data-options="field:'alarmTime'," width="140">报警时间</th>
            <th data-options="field:'speed'" width="70">速度(km/h)</th>
            <th data-options="field:'location'" width="320">位置</th>
            <th data-options="field:'latitude'" width="80">纬度</th>
            <th data-options="field:'longitude'" width="80">经度</th>
        </tr>
    </thead>
</table>





    <!-- <br> -->
    <!-- <span id="testInfo"></span> -->
</body>